package cn.xiaobai.core.domain.module;

import cn.xiaobai.core.domain.schedule.TaskExecutorProcessor;
import com.fasterxml.jackson.databind.JsonNode;

/**
 * @Author yangdaji
 * @Date 2023/12/10
 * @PackageName cn.xiaobai.core.domain.factory
 * @ClassName InConf
 */
public interface InConf {

    /**
     * 初始化资源等，此时未启动工具执行
     *
     * @param config 该模块的配置信息，从配置文件中获取并传入
     */
    void init(JsonNode config) throws RuntimeException;

    /**
     * 启动工具, 这里需要什么参数:
     * 启动工具, 原先需要转换插件等, 所以从启动里面会集成其他的插件进行处理
     * 而这里只有一个, 所以不需要去集成, 所以只需要启动的信息
     * 所以工具需要有数据输入吗, 所以可以创建一个接口, 来定义插件的信息
     *
     * @param taskExecutorProcessor 用于执行任务的接口
     */
    void start(TaskExecutorProcessor taskExecutorProcessor);

    /**
     * 关闭工具
     */
    void stop();

    /**
     * 工具是否关闭
     *
     * @return
     */
    boolean isCanceld();

    /**
     * 反初始化，释放资源等
     */
    void uninit();

}
